<?php

namespace common\traits;

use Yii;

/**
 * 模型处理错误特性方法
 * 
 * @author emhome <emhome@163.com>
 * @since 1.0
 */
trait FlashError {

    /**
     * 显示flash信息
     * @param $message 信息显示内容
     * @param string $type 信息显示类型, ['info', 'success', 'error', 'warning']
     * @param null $url 跳转地址
     * @return Response
     */
    protected static function flash($message, $type = 'info', $url = null) {
        $flashValue = [];
        if (is_string($message)) {
            $flashValue['body'] = $message;
        } elseif (is_array($message)) {
            $flashValue = $message;
        } else {
            $flashValue['body'] = '提示内容类型错误';
        }
        Yii::$app->getSession()->setFlash($type, $flashValue);
    }

    /**
     * 错误提醒
     * @param $message 信息显示内容
     * @param null $debug 调试信息
     */
    public static function error($message, $debug = []) {
        if (YII_DEBUG) {
            Yii::error([
                'message' => $message,
                'debug' => $debug,
            ], __METHOD__);
        }
        if (!empty($debug)) {
            $message .= "\n" . print_r($debug, true);
        }
        self::flash($message, 'error');
    }

    /**
     * 错误提醒
     * @param $message 信息显示内容
     * @param null $debug 调试信息
     */
    public static function warning($message, $debug = []) {
        if (YII_DEBUG) {
            Yii::error([
                'message' => $message,
                'debug' => $debug,
            ], __METHOD__);
        }
        if (!empty($debug)) {
            $message .= "\n" . print_r($debug, true);
        }
        self::flash($message, 'warning');
    }

    /**
     * 成功提醒
     * @param $message 信息显示内容
     * @param null $url 跳转地址
     */
    public static function success($message, $url = null) {
        self::flash($message, 'success', $url);
    }

}
